JAWS-UG コンテナ支部 入門編 #6 コンテナの始め方 に参加しました。
AWS Expert Online これからはじめるコンテナワークロード - コンテナ化ベストプラクティス -
by @toricls / Amazon Web Services Japan
コンテナにまつわる4つの誤解
コンテナ化を阻む4つの誤解
- まずはどのオーケストレーションツールを使うか考えなければならない
- Choose "the right tools for the right job"
- そもそも本当にコンテナが必要か?
- コンテナを使うならマイクロサービス化しなければならない
- ユースケースの1つではあるが、飛躍しすぎ
- コンテナ化すると開発・運用手法が大きく変わる
- 進め方次第。影響範囲を狭める方法はいくつもある。
- はじめてのコンテナ利用は新規プロジェクト方がよい
- むしろ現行プロジェクトの移行の方がよい
なぜコンテナか?
- Run Anywhere
- Portability
- Isolated Process
なぜオーケストレーションツールか?
- コンテナの機能性のスコープは単一ノードにおけるライフサイクル管理
- オーケストレーションツール + α で実現される機能性の例
- 複数サーバにまたがるコンテナのレプリケーションやスケジューリング
- クラッシュしたコンテナのオートヒーリング
- オートススケーリング
- etc
コンテナの導入から運用まで
コンテナ導入から運用までのポイント
- これまで使ったことがない技術の導入には成功までの道筋が必要
- 目的・ゴールを明確にし、道筋を描く
- ゴールに至るまでのマイルストーン
- 一気にすべて終わらせることは難しい
- ゴールまでのマイルストーンを適切に配置する
- 各ステップで何をやり、何をやらないのかを明確化する
- 改善のイテレーション
- 改善のためのイテレーションを常に回す
初コンテナ環境におすすめのゴールと進め方
- 既存システムを構成するアプリケーションの1つをコンテナに置き換える
- ゴールは "置き換えの前後で同じように動く" こと
- 一般にシステムは多くのコンポーネントから構成される
- 本番環境に投入できる状態となるまでの間、try & errorしやすい環境でイテレーションを回すことが近道
- 新規アプリケーションでコンテナを採用すると欲が出やすい
- なるべく既存の開発・運用フローを変えないように進める
- うまく行かなければコンテナを消せば大丈夫、という状態
コンテナ導入から運用までのステップ
- コンテナの特性とそれらが解決する課題を知る
- その課題はコンテナじゃないと解決できないのか?
- コンテナでの解決が最適なのか?
- コンテナ化
- 何をコンテナ化するか
- 既存システムのシンプルなWebアプリ、なければバッチジョブがオススメ
- どうコンテナ化するか
- Dockerfileを書く && docker build
- 最初にやるべきこと
- 1コンテナ1プロセス
- アプリケーションのステートレス化
- アプリケーションログはファイルではなく標準出力へ
- ステートフルな例
- セッション情報がローカルディスクに出力されている -> ElastiCacheなどを使用しましょう
- 手動でのデプロイ
- ECS/FargateのGetting Startedで作成されるタスク定義の書き換えで良い
- ECRへのdocker
- オーケストレータの特性と解決する課題を知る
- オーケストレータの特性
- EC2インスタンスタイプなど、特定条件に基づくデプロイも可能ではある
- 仮想マシンの家畜化
- チームの開発のための開発環境整備、自動化、CI/CD
- チーム開発のための環境整備
- "ローカル開発環境でコードを書き換えたら即反映されて動作確認可能"
- 少なくとも今よりもユーザーエクスペリエンスが悪化しない開発環境の構築を目指す
- ドキュメンテーション、ドキュメンテーション、ドキュメンテーション
- 開発環境利用時のトラブルやHow To
- スクリプトが動かないときにマニュアルでやる方法etc.
- 自動化
- ここまで手作業で行ってきたことをCI/CDパイプラインに組み込む
- 運用を見据えたデザイン
- 現行システムで満たされているレベルを達成する
- 検討内容の例
- ロールバック
- データベーススキーママイグレーション
- オートスケーリング
- ネットワークポリシー
- ログ分析
- IAMロール設計
- 負荷試験による適切なタスクリソースの割当
- 秘密情報・設定情報の取扱etc.
- ここまで構築してきた仕組みに乗って、イテレーションを回す
- ドキュメンテーション、ドキュメンテーション、ドキュメンテーション
- 社内・チーム教育
- 自分だけが仕組みを理解している状態は脆弱
- ここまでの仕組みをなぜ採用したのか意思決定の意図も共有
- ドキュメンテーション、ドキュメンテーション、ドキュメンテーション
- システムとチームの成長を見据えたモダナイゼーションと最適化
- さらなる自動化の推進
- デリバリ高速化、影響範囲最小化を目指したマイクロサービス化
- 直接コスト削減のための環境最適化
1~3 1st Milestone
4~5 2nd Milestone
6〜7 3rd Milestone
8 4th Milestone
9本番環境導入後
まとめ
- ゴールと道筋を明確にする
- はじめてのコンテナワークロードには既存アプリケーションがオススメ
- コンテナ化から本番環境投入まで、すべてにおいてイテレーションを回す
- コンテナ化にあたっての作業量、チームメンバーのオンボーディングの考慮
- 本番環境投入後も継続的に改善する
AWS クラウドサービス活用資料集 に後日アップ予定だそうです。
平成最後なのでEC2インフラからECS+Fargateに置き換えた話
by Masashi Yamamotoさん / SRE at eureka
平成最後なのでEC2からECS+Fargateに置き換えた話
AWS での Docker ビルド & 脆弱性スキャンミニハンズオン
byコンテナ支部
最近の勉強会だとよく導入されていますが、
- 環境は、Dokcerで準備しておいたimageをpullしてもらう。
- テキストは、Jupyterでnotebookを準備しておいて進めてもらう。
という手法は、研修等にも活用していきたいと思いました。
以上